1. Technical Field
This application relates to the field of storing data, and more particularly to the field of accessing data in a database.
2. Description of Related Art
Data storage may be categorized into two broad categories: schema-based and schema-free. Schema-based platforms offer access to data via pre-defined data structures, or data schema. The data schema is defined by the provider of the platform and is not changed by platform's client application. Such platforms generally provide web service APIs designed around the schema. In schema-free platforms, on the other hand, the data can be stored without needing to pre-define any data model. The API provided by schema-free platform is highly generic and does not make any assumptions about the data model of the data being stored or queried.
Each platform category has its benefits and drawbacks. Schema-based platforms expose an API appropriate for building applications that create and access data that follows a pre-defined schema. For example, Facebook APIs are suitable for applications that deal with people's profiles and their social network. The drawback of schema-based platforms lies in their being inappropriate to support applications that use a different data model. Thus, the range of possible applications is reduced to those that can be built around existing API.
In contrast, schema-free platforms provide developers with greater flexibility when building applications, and eliminate the need to re-factor an entire database as those applications evolve. Thus, schema-free platforms can support a greater range of applications with different data models. For example Amazon's Simple DB, a schema-free platform, offers a key-value storage API. The drawback of schema-free platforms is that they require an application to serialize its data model into a form suitable for storage via a generic interface. The query model supported by schema-free databases is separate from the application's data model. As a result, an application is responsible for managing the mapping between its internal data model and platform's API.
Accordingly, it would be desirable to provide a database mechanism that includes the benefits of schema-based and schema-free platforms without the drawbacks of those systems.